import moment from 'moment'
import 'moment-timezone'
import 'moment/locale/zh-cn'

// 设置中国时区和语言
moment.locale('zh-cn')
moment.tz.setDefault('Asia/Shanghai')

export class DateTimeUtil {
  // 获取当前时间
  static now() {
    return moment()
  }

  // 格式化日期
  static format(date: Date | string | number, format = 'YYYY-MM-DD HH:mm:ss') {
    return moment(date).format(format)
  }

  // 解析日期字符串
  static parse(dateStr: string, format?: string) {
    return format ? moment(dateStr, format) : moment(dateStr)
  }

  // 获取今天开始时间
  static todayStart() {
    return moment().startOf('day')
  }

  // 获取今天结束时间
  static todayEnd() {
    return moment().endOf('day')
  }

  // 获取本周开始时间
  static weekStart() {
    return moment().startOf('week')
  }

  // 获取本周结束时间
  static weekEnd() {
    return moment().endOf('week')
  }

  // 获取本月开始时间
  static monthStart() {
    return moment().startOf('month')
  }

  // 获取本月结束时间
  static monthEnd() {
    return moment().endOf('month')
  }

  // 计算两个日期之间的天数
  static daysBetween(start: Date | string, end: Date | string) {
    const startDate = moment(start)
    const endDate = moment(end)
    return endDate.diff(startDate, 'days')
  }

  // 添加天数
  static addDays(date: Date | string, days: number) {
    return moment(date).add(days, 'days')
  }

  // 添加月份
  static addMonths(date: Date | string, months: number) {
    return moment(date).add(months, 'months')
  }

  // 是否是工作日
  static isWeekday(date: Date | string) {
    const day = moment(date).day()
    return day !== 0 && day !== 6
  }

  // 获取农历日期
  static getLunarDate(date: Date | string) {
    // 这里可以集成农历转换库
    return moment(date).format('YYYY-MM-DD')
  }
}
